package likouJava;

public class 两数相加 {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode dummy = new ListNode(0);  // 虚拟头节点
        ListNode current = dummy;
        int carry = 0;  // 进位

        while (l1 != null || l2 !=null){
         int x = (l1 != null) ? l1.val : 0;
         int y = (l2 != null) ? l2.val : 0;
         int sum = x + y + carry;

         carry = sum / 10;
         current.next = new ListNode(sum % 10);
         current = current.next;

         if (l1 != null) l1 = l1.next;
         if (l2 != null) l2 = l2.next;

        }
        if (carry != 0){
            current.next = new ListNode(carry);
        }
        return dummy.next;
    }

}
